From d74ecfb02ea1612611050837f38c6628973dd9e9 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Sun, 11 Mar 2018 13:41:10 +0100 Subject: [PATCH] gtkwidget: Break early if non-gesture controllers handle the event Non gesture controllers have no means to collaborate with other controllers, thus should be considered standalone entities. It makes no sense to propagate any further if scroll/key controllers handled the event. --- gtk/gtkwidget.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index 8bb3b57c34..24a142e1e9 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -5229,6 +5229,13 @@ _gtk_widget_run_controllers (GtkWidget *widget, if (controller_phase == phase) handled |= gtk_event_controller_handle_event (data->controller, event); + + /* Non-gesture controllers are basically unique entities not meant + * to collaborate with anything else. Break early if any such event + * controller handled the event. + */ + if (handled && !GTK_IS_GESTURE (data->controller)) + break; } l = next; -- 2.30.2